import matplotlib.pyplot as plt
import numpy as np

# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']  # 指定使用的中文字体，这里以宋体（SimHei）为例
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

# 数据
categories = ['一般', '中度', '高度']
positive_counts = [1317, 443, 279]  # 积极情绪分段统计
negative_counts = [1271, 284, 51]  # 消极情绪分段统计

# 计算总体情绪分布
total_counts = np.array(positive_counts) + np.array(negative_counts)

# 创建堆叠式条形图
fig, ax = plt.subplots()

# 绘制积极情绪分段统计
bar1 = ax.bar(categories, positive_counts, label='积极情绪')

# 绘制消极情绪分段统计，放置在积极情绪之上
bar2 = ax.bar(categories, negative_counts, bottom=positive_counts, label='消极情绪')

# 添加总体情绪分布的数值标签
for i, (p, n) in enumerate(zip(positive_counts, negative_counts)):
    ax.text(i, p + n / 2, f'Total: {total_counts[i]}', ha='center', va='bottom')

# 添加图例
ax.legend()

# 设置图表标题和标签
ax.set_xlabel('情绪程度')
ax.set_ylabel('数量')
ax.set_title('总体情绪分布及积极/消极情绪分段统计')

# 显示图表
plt.show()
